Computers can generate graphical displays that show an object or scene in three apparent physical dimensions. Such three-dimensional (3D) graphics or images are extremely useful for visualizing real-world objects, scenes, or processes. Systems and software processes for generating 3D graphics are described in detail in W. Newman et al., "Principles of Interactive Computer Graphics" (New York: McGraw-Hill, Inc., 1979).
When polygons, surfaces, and other 3D graphical elements are combined into a computer-generated scene that resembles a real environment, the scene is called a "virtual world" and the computer is said to display "virtual reality". Computer programs are available for defining, editing, and displaying virtual worlds using a personal computer or a graphics workstation.
Recently, a global packet-switched network known as the Internet has attracted wide use. A local computer can connect to a distant server, request a file or an image from the server, and receive the requested information immediately. The Internet operates according to several standard protocols. Packets of data are communicated among Internet host computers ("servers") using the Transmission Control Protocol (TCP) and Internet Protocol. The name and location of each server connected to the Internet is indexed at several computers known as Domain Name Servers (DNSs). A local computer can look up the name of a remote server using a DNS, connect to the remote computer, and send and receive information.
One popular technology enjoying wide use with the Internet is known as the World Wide Web. The World Wide Web enables a computer to locate a remote server using the DNS and then establish a connection to the server and retrieve information using a communication protocol called the Hypertext Transfer Protocol (HTTP). A Uniform Resource Locator (URL) uniquely identifies each page of information stored on the remote server. A URL is a form of network address that identifies the location of information stored in a network. The local computer requests information by providing a request containing a URL of the desired information to the remote server. The server receives the request, locates the page of information corresponding to the URL, and returns the page to the local computer over the HTTP connection. The pages of information are files prepared in the Hypertext Markup Language (HTML). The local computer runs a browser program that can read HTML files, interpret HTML codes in the files, and generate a complex graphical display.
The Virtual Reality Modeling Language (VRML) provides a way to integrate virtual reality technology with World Wide Web technology. VRML is the industry-standard description language for storing and delivering 3D information over the Internet. Using VRML, virtual worlds can be defined in human-readable text form and in a device-independent manner. The virtual world is defined in a text file that is interpreted at runtime, like a scripting language. A complete definition of the VRML language can be found in documents of the VRML organization stored at http://www.vrml.org/, and in other published sources.
Using VRML, a virtual world is defined in a written language in terms of nodes and fields. Nodes are abstractions of real-world objects and concepts. Examples include spheres, lights, and material descriptions. Nodes contain fields and events. Messages may be sent between nodes along routes. Nodes are organized into a representation of a vie world called a scene graph. A field is a property or attribute of a node. Each type of node has a fixed set of fields. Fields may contain data and one or many values.
In the past, virtual worlds have been stored in a graphical format, such as a bitmap, a set of inter-related sprites, vectors, or other complex numeric information. The text format of virtual worlds defined using VRML uses significantly less storage space than a graphical representation of a virtual world. However, the tradeoff for having less storage is that computation must be performed to transform the VRML text file into an image. As a result, a 3D scene is not rendered and displayed as quickly as it would be if the scene were stored in a graphical representation. As available computing power continues to increase, the processing required to render an image at runtime becomes less significant.
Generally, a VRML virtual world is defined and described in a text file using the VRML language. The browser is provided with a VRML interpreter, generally in the form of a program which can "plug-in" to the browser. An example of a VRML interpreter is the Cosmo browser plug-in available from Silicon Graphics, Inc. VRML worlds are stored on a server. The term "VRML world" or "world" in this context refers both to textual source code and the display resulting from interpretation of the source code by a computer using the VRML interpreter. The browser requests a VRML world by providing its URL to the server. For example, the URL of a VRML world is included in a Web page of a Web site, or associated (as by hyper-linking) with a portion of the Web page. When a user selects or clicks on the hyperlink, the browser sends the URL to the server. The server locates the selected VRML world and returns it in text file format to the local computer. The browser reads the VRML world, interprets the VRML commands, opens a browser window or frame on the computer display, and generates a graphic display. Thus, the server generates a virtual world and the browser renders the virtual world. In this way, virtual worlds can be displayed in a window of a browser.
For example, the following VRML source code will generate a virtual world comprising a red cone when it is run in a VRML-enabled browser:
______________________________________ Shape { appearance Appearance { material Material { diffuseColor 1 0 0 } } geometry Cone { } } ______________________________________
This example defines a VRML world that has one "node" called "Shape". The source code of the world defines the "Shape" node as having a particular appearance, apparent material, color, and geometry.
A key advantage of VRML is that the application programmer who writes the VRML world need not write platform-specific code; the same VRML world will run on a personal computer with an Intel.RTM. processor, a workstation that has a SPARC.RTM. processor, an Apple.RTM. Macintosh.RTM. computer, or a graphics workstation, provided that a VRML-enabled browser is running.
In general, a VRML world is prepared by writing a text file containing VRML commands, in human-readable source code form, using a general-purpose text editor or a VRML editor such as Silicon Graphics' CosmoSuite or IDS' VRealmsBuilder. A complicated world having numerous shapes or textures may require thousands of lines of VRML code. In the past, such complex VRML worlds have been stored in the form of a single sequential-record text file. To display the world, a VRML-enabled browser loads the entire world as a unit, and then interprets the entire world starting from the top of the source file and proceeding to the bottom. The VRML interpreter then determines what portion of the world is visible from the current point of view "seen" by the browser, and displays that portion of the world.
However, this approach is slow and inefficient. The display screen of the user's computer generally shows only a portion of a world. Accordingly, in a complex world only a small portion of the world may be visible on the display at a particular time. The remainder of the world may lie conceptually behind the viewer, to the side, or beyond a vanishing point on the horizon. In such cases, it is inefficient and unnecessary for the browser to load, interpret, and attempt to display invisible portions of the world.
This approach also imposes significant burdens on systems that comprise display stations or "clients" coupled over a network to a server that contains the VRML file. It is inefficient and burdensome on the network to transfer a large VRML file as a complete unit over the network to a display station, when only a portion of the world is within the field of view of the display station.
The conventional approach also may be impractical in a system comprising a server that stores the VRML file and a remotely located display terminal that lacks a large storage device. For example, computing environments are being developed using servers and remotely connected network computers. The network computers have limited memory and lack large storage devices such as disk drives. A large VRML file may exceed the memory storage space available in a network computer, so that the VRML world cannot be displayed.
Another disadvantage of the conventional approach is that the VRML file is monolithic and static. A complicated world defined in a large VRML file is difficult to maintain and update. For example, to make a small change to a world, such as removing a tree from a scene, it would be necessary to: retrieve the entire VRML file; find the portion of the file in which the tree is defined; update the file using a text editor to remove the tree; and save the updated file as a single unit. In addition, the same process of editing, saving, and reloading must be used when the user wishes to add new elements to the world. Manipulating a VRML file in this manner excessively burdens the user and the computing system, and is slow and error-prone.
Database systems are computer programs optimized for creating, storing, manipulating, and reporting on information stored in tables. The tables are organized as an array of rows and columns. The values in a row are associated with each other in some way; for example, a row may store a complete data record relating to a sales transaction, a person, or a project. Columns of the table define discrete portions of the rows that have the same general data format. For example, columns define fields of the records.
Database systems provide a powerful way to organize large amounts of information and retrieve selected information. They operate rapidly and can be applied to real-time data-entry situations in which data is constantly entered, retrieved, and updated. However, in the past, adapting databases to graphics applications has been slow and cumbersome, requiring custom code. In addition, database systems generally have limited graphics generating capabilities especially with respect to delivering information over the Web. Most data is displayed in tabular reports, or other line-oriented and column-oriented methods. While some database systems provide graphic display capabilities, the displays are usually limited to simple graphs and charts.
Based on the foregoing, there is a clear need for a system, process and product that provides rapid and efficient creation, modification and updating of a virtual world.
There is a particular need for mechanisms that generate and communicate to a user, browser or client only that portion of a virtual world that is visible to the user, browser or client, or within its field of view, at a particular time.
There is also a need for mechanisms that display a viral world efficiently and effectively on a remote display device that has limited local storage space.
There is also a need for mechanisms that can sense when the point of view of the user, browser or client has moved so as to encompass a new portion of the virtual world, and that can then generate only that portion of the virtual world that has become visible to the user, browser or client as a result of the move.